/*
Copyright © 2023 taiping
*/

package templates

var Controller = `
package controller

import (
	"github.com/kataras/iris/v12"
	"github.com/spf13/cast"
	"wit-admin-go/business/dto"
	"wit-admin-go/business/service"
	"wit-admin-go/system/app/controller"
	sysDto "wit-admin-go/system/app/dto"
	"wit-admin-go/system/utils"
	log "wit-admin-go/system/zaplogger"
)

type {{.M2}}Controller struct{}

var {{.M2}} = new({{.M2}}Controller)

// Get{{.M2}}ById
//
//	@Tags		{{.M1}}
//	@Summary	通过id获取{{.M3}}信息
//	@accept		x-www-form-urlencoded
//	@Produce	x-www-form-urlencoded
//	@Param		id	query	string	true	"{{.M1}} id"
//	@Success	200
//	@Router		/{{.M1}}/get{{.M2}}ById [get]
//
// @Security ApiKeyAuth
func (us *{{.M2}}Controller) Get{{.M2}}ById(ctx iris.Context) {
	res := new(sysDto.Result)
	id := ctx.URLParam("id")
	if id == "" {
		_ = ctx.JSON(sysDto.NewResult(nil, iris.StatusBadRequest, "缺少参数id"))
		return
	}

	{{.M1}}, err := service.{{.M2}}Service.Get{{.M2}}ById(id)
	if err != nil {
		res.Code = iris.StatusNotFound
		res.Msg = "数据没找到"
	} else {
		res.Code = iris.StatusOK
		res.Data = {{.M1}}
		res.Msg = "请求成功"
	}
	_ = ctx.JSON(res)
}

// Create{{.M2}}  添加{{.M3}}
//
//	@Summary		添加{{.M3}}
//	@Description	添加{{.M3}}
//	@Tags			{{.M1}}
//	@Accept			x-www-form-urlencoded
//	@Produce		x-www-form-urlencoded
//	@Param			name		query	string	true	"{{.M3}}名"
//	@Param			memo		query	string	false	"备注"
//	@Success		200
//	@Router			/{{.M1}}/create{{.M2}} [post]
//
// @Security ApiKeyAuth
func (us *{{.M2}}Controller) Create{{.M2}}(ctx iris.Context) {
	res := new(sysDto.Result)
	{{.M1}} := new(dto.{{.M2}})
	{{.M1}}.Id = utils.GetUid()
	{{.M1}}.CreateId = controller.GetUser(ctx).Id
	err := ctx.ReadForm({{.M1}})
	if err != nil {
		log.Error(cast.ToString(err))
		res.Code = iris.StatusBadRequest
		res.Msg = cast.ToString(err)
		_ = ctx.JSON(res)
		return
	}
	err = service.{{.M2}}Service.PostCreate{{.M2}}(*{{.M1}})
	if err != nil {
		res.Code = iris.StatusBadRequest
		res.Msg = "该{{.M3}}已存在"
	} else {
		res.Code = iris.StatusOK
		res.Msg = "创建成功"
	}
	_ = ctx.JSON(res)
}

// Update{{.M2}}  修改{{.M3}}
//
//	@Summary		修改{{.M3}}
//	@Description	修改{{.M3}}
//	@Tags			{{.M1}}
//	@Accept			x-www-form-urlencoded
//	@Produce		x-www-form-urlencoded
//	@Param			id			query	string	true	"ID"
//	@Param			name		query	string	false	"{{.M3}}名"
//	@Success		200
//	@Router			/{{.M1}}/update{{.M2}} [put]
//
// @Security ApiKeyAuth
func (us *{{.M2}}Controller) Update{{.M2}}(ctx iris.Context) {
	res := new(sysDto.Result)
	{{.M1}} := new(dto.{{.M2}})
	{{.M1}}.UpdateUser = controller.GetUser(ctx).Id
	err := ctx.ReadForm({{.M1}})
	if err != nil {
		log.Error(cast.ToString(err))
		res.Code = iris.StatusBadRequest
		res.Msg = cast.ToString(err)
		_ = ctx.JSON(res)
		return
	}
	err = service.{{.M2}}Service.PutUpdate{{.M2}}(*{{.M1}})
	if err != nil {
		res.Code = iris.StatusNotFound
		res.Msg = err.Error()
	} else {
		res.Code = iris.StatusOK
		res.Msg = "修改成功"
	}
	_ = ctx.JSON(res)
}

// GetList 获取所有{{.M3}}
//
//	@Summary		获取{{.M3}}信息
//	@Description	获取{{.M3}}信息
//	@Tags			{{.M1}}
//	@Param			pageNum			query	int		false	"页码"
//	@Param			pageSize		query	int		false	"每页数"
//	@Param			name			query	string	false	"{{.M3}}名"
//	@Accept			x-www-form-urlencoded
//	@Produce		x-www-form-urlencoded
//	@Success		200
//	@Router			/{{.M1}}/get{{.M2}}List [get]
//
// @Security ApiKeyAuth
func (us *{{.M2}}Controller) GetList(ctx iris.Context) {
	res := new(sysDto.Result)
	page := new(dto.{{.M2}}Page)
	if err := ctx.ReadForm(page); err != nil {
		res.Code = iris.StatusBadRequest
		res.Msg = "参数错误"
		_ = ctx.JSON(res)
		return
	}
	{{.M1}}, total := service.{{.M2}}Service.Get{{.M2}}List(page)
	res.Data = {{.M1}}
	res.Msg = "请求成功"
	res.Code = iris.StatusOK
	// Header返回总条数
	utils.SetTotal(ctx, total)
	_ = ctx.JSON(res)
}

// Delete{{.M2}} 删除{{.M3}}
//
//	@Summary		删除{{.M3}}
//	@Description	删除{{.M3}}
//	@Tags			{{.M1}}
//	@Accept			x-www-form-urlencoded
//	@Produce		x-www-form-urlencoded
//	@Param			id	query	string	true	"{{.M1}} id"
//	@Success		200
//	@Router			/{{.M1}}/delete{{.M2}} [delete]
//
// @Security ApiKeyAuth
func (us *{{.M2}}Controller) Delete{{.M2}}(ctx iris.Context) {
	res := new(sysDto.Result)
	id := ctx.URLParam("id")
	if id == "" {
		_ = ctx.JSON(sysDto.NewResult(nil, iris.StatusBadRequest, "缺少参数id"))
		return
	}

	err := service.{{.M2}}Service.Delete{{.M2}}(id, controller.GetUser(ctx).Id)
	if err != nil {
		res.Code = iris.StatusNotFound
		res.Msg = err.Error()
	} else {
		res.Code = iris.StatusOK
		res.Msg = "删除成功"
	}
	_ = ctx.JSON(res)
}
// Remove{{.M2}} 永久删除{{.M3}}
//
//	@Summary		永久删除{{.M3}}
//	@Description	永久删除{{.M3}}
//	@Tags			{{.M1}}
//	@Accept			x-www-form-urlencoded
//	@Produce		x-www-form-urlencoded
//	@Param			id	query	string	true	"{{.M1}} id"
//	@Success		200
//	@Router			/{{.M1}}/remove{{.M2}} [delete]
//
// @Security ApiKeyAuth
func (us *{{.M2}}Controller) Remove{{.M2}}(ctx iris.Context) {
	res := new(sysDto.Result)
	id := ctx.URLParam("id")
	if id == "" {
		_ = ctx.JSON(sysDto.NewResult(nil, iris.StatusBadRequest, "缺少参数id"))
		return
	}

	err := service.{{.M2}}Service.Remove{{.M2}}(id)
	if err != nil {
		res.Code = iris.StatusNotFound
		res.Msg = err.Error()
	} else {
		res.Code = iris.StatusOK
		res.Msg = "删除成功"
	}
	_ = ctx.JSON(res)
}
`
